package com.mipo.singleton.lazy.threadunsafe.newinstancesynchronized;

/**
 * 针对某些重要的代码来进行单独的同步（可能非线程安全）针对某些重要的代码进行单独的同步，而不是全部进行同步，可以极大的提高执行效率，
 * 我们来看一下：此时多线程下执行情况进行验证，从运行结果来看，这样的方法进行代码块同步，代码的运行效率是能够得到提升，但是却没能保住线程的安全性。看来还得进一步考虑如何解决此问题。
 * @author kitty
 */
public class NewInstanceSynchronizedSingleton {
	
	private static NewInstanceSynchronizedSingleton instance = null;
	
	private NewInstanceSynchronizedSingleton(){}
	 
	public static NewInstanceSynchronizedSingleton getInstance() {
		try {  
			if(instance == null) {
				//创建实例之前可能会有一些准备性的耗时工作 
				Thread.sleep(300);
				synchronized (NewInstanceSynchronizedSingleton.class) {
					instance = new NewInstanceSynchronizedSingleton();
				}
			} 
		} catch (InterruptedException e) { 
			e.printStackTrace();
		}
		return instance;
	}
}



